CPP
Section: User Commands (1)
Updated: 30 May 1993
Index
Return to Main Contents
NAME
cpp - a stand-alone C preprocessor
SYNOPSIS
cpp
[
-CTV
] [
-P[012]
] [
-Dname
]
[
-Dname=def
] [
-Idirectory
] [
-Uname
]
[
-ansi
] [
-f[no-]c++-comments
] [
-W[no-]bad-chars
]
[
-W[no-]nested-comments
] [
input-file
[
output-file
] ]
DESCRIPTION
cpp
is a stand-alone C preprocessor, intended for use with C compilers such
as HSC which do not provided access to preprocessor output. It
implements as closely as possible an ANSI standard C preprocessor,
including trigraphs, token pasting and stringizing.
cpp
optionally accepts two filenames as arguments.
input-file
and
output-file
are, respectively, the input and output files for the preprocessor.
If not specified, or if given as `-', they default to the standard
input and the standard output, respectively.
OPTIONS
- -C
-
Pass all comments (except those that appear on
cpp
directive lines) through the preprocessor.
By default,
cpp
strips out C-style comments.
- -P[012]
-
Preprocess the input without producing the line control
information used by the next pass of the C compiler. A numeric argument
can be passed to -P: 0 specifies that no line control information
control is generated, and is equivalent to -P; 1 specifies that normal
line control information is generated, which is the default; and 2
specifies that line control information is generated in the form of
preprocessor
#line
directives.
- -T
-
Translate trigraphs in the input file. This behavior is implied by the
-ansi
option.
- -D name
-
Define
name
as 1 (one).
This is the same as if a
-Dname=1
option appeared on the
cpp
command line, or as if a
-
-
#define name 1
-
line appeared in the source file that
cpp
is processing.
- -Dname=def
-
Define
name
as if by a
#define
directive.
This is the same as if a
-
-
#define name def
-
line appeared in the source file that
cpp
is processing. The
-D
option has lower precedence than the
-U
option; that is, if the same name is used in both a
-U
option and a
-D
option, the name will be undefined regardless of the order of the options.
- -Idirectory
-
Insert
directory
into the search path for
#include
files with names not beginning with
`/', `\\',
or a drive specifier.
directory
is inserted ahead of the standard list of ``include'' directories.
Thus,
#include
files with names enclosed in
double-quotes (")
are searched for first in the directory of the file with the
#include
line, then in directories named with
-I
options, and lastly, in directories from the standard list.
For
#include
files with names enclosed in angle-brackets
(<>),
the directory of the file with the
#include
line is not searched.
See
USAGE
below for exact details of this search order.
- -Uname
-
Remove any initial definition of
name,
where
name
is a symbol that is predefined by the preprocessor.
- -V
-
Print version information to
stderr.
- -ansi
-
Define the preprocessor token
__STDC__
to have value 1, and enable trigraph translation. To get
__STDC__
without trigraph translation, you can specify the options
-ansi
-T.
The following
-f
and
-W
options can be negated by adding a
no-
before the option name. Some are on by default.
- -fc++-comments
-
Support the C++ comment indicator
`//'.
With this option active, everything on the line after the
//
is treated as a comment. Off by default.
- -Wbad-chars
-
Issue a warning if a character that cannot legally appear in a C program
appears in the input. On by default.
- -Wnested-comments
-
Issue a warning if a comment-start character sequence
(`/*',
and
`//'
if
-fc++-comments
is active) appears in a comment. Off by default.
USAGE
If you are familiar with C, you should already know about the basic
workings of
cpp.
We will not go into a detailed description here, since any good book on
C could do better; instead, we will describe details particular to this
implementation.
Directory Search Order
A file specified in an
#include
directive will be searched for in the following directories, in order:
-
- 1.
-
The directory of the file that contains the
#include
directive, if the directive is of the form `#include
``filename'''.
- 2.
-
The directories specified by
-I
options, in the order they were specified.
- 3.
-
The list of directories specified in the
INCLUDE
environment variable, in order.
Special Names
The following macros are predefined by
cpp:
-
- __STDC__
-
Expands to 1 if the
-ansi
option is specified.
- __LINE__
-
Expands to an integer constant representing the current line number in
the current input file.
- __FILE__
-
Expands to a string constant representing the name of the current input
file.
- __DATE__
-
Expands to a string constant of the form "Mmm dd yyyy" representing the
date on which preprocessing was initiated.
- __TIME__
-
Expands to a string constant of the form "hh:mm:ss" representing the
system time at which preprocessing was initiated.
- __INCLUDE_LEVEL__
-
Expands to an integer constant representing the current depth of nested
#include
files.
SEE ALSO
Documentation for your C compiler
Any good book on C.
DIAGNOSTICS
The error messages produced by
cpp
are intended to be self-explanatory. The line number and filename
where the error occurred are printed along with the diagnostic.
BUGS
None that I know of, but there's almost always One More Bug(TM). If you
should find one, please report it to me, Scott Bigham, at
dsb@cs.duke.edu.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- USAGE
-
- Directory Search Order
-
- Special Names
-
- SEE ALSO
-
- DIAGNOSTICS
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 02:58:25 GMT, January 17, 2025